Lesson 16 Eight LED with 74HC595
https://gyazo.com/274ea5756ad461ae222dc94d128b41c6
https://gyazo.com/f4fbe7ead624e88c3c5f49f93b5241c3
https://gyazo.com/adf5ad773d81a66fe9543f7ca18450fe
くぼみ上の左端、16Pin(VCC=5V)、右端、9P(QH’=複数使う時の送り端子)
くぼみ下の左端、1Pin(QB)、右端、8P(GND)
https://gyazo.com/c88c2fe9dbbe7df003e11051c0a49b32
7Pin(QH)最初に光るLED
6Pin(QG)2番目に光るLED
5Pin(QF)3番目に光るLED
4Pin(QE)4番目に光るLED
3Pin(QD)5番目に光るLED
2Pin(QC)6番目に光るLED
1Pin(QB)7番目に光るLED
15Pin(QA)最後に光るLED
hr.icon
D12→橙→「SER」 dataPin = 12; // (12) DS S1 on 74HC595
D11→白→「RCLK」 latchPin = 11; // (11) ST_CP RCK on 74HC595
D9→緑→「SRCLK」 clockPin = 9; // (9) SH_CP SCK on 74HC595
5V→赤→「VCC」 ブレッドボードの電源ライン(赤)
GND→黒→「GND」 ブレッドボードのGNDライン(青)
code:.ino
int tDelay = 100;
int latchPin = 11;
int clockPin = 9;
int dataPin = 12;
byte leds = 0;
void updateShiftRegister()
{
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, leds);
digitalWrite(latchPin, HIGH);
}
void setup()
{
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}
hr.icon
code:.ino
void loop()
{
leds = 0;
updateShiftRegister();
delay(tDelay);
for (int i = 0; i < 8; i++)
{
bitSet(leds, i);
updateShiftRegister();
delay(tDelay);
}
}
https://gyazo.com/98efda93985f7782fada15d736446a39
青から順々に点灯していき、全部点灯したら、全部:消える
hr.icon
https://gyazo.com/98efda93985f7782fada15d736446a39
青から順々に点灯していき、全部点灯したら、全部:消える(上記コードと同じ動作)
code:.ino
//Pin connected to ST_CP of 74HC595
int latchPin = 11;
//Pin connected to SH_CP of 74HC595
int clockPin = 9;
////Pin connected to DS of 74HC595
int dataPin = 12;
//**** for LSBFIRST *****
byte StoBar9={0b00000000, 0b00000001,
0b00000011,
0b00000111,
0b00001111,
0b00011111,
0b00111111,
0b01111111,
0b11111111,
};
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void bar8(int s) {
digitalWrite(latchPin, LOW);
if(s>8){
shiftOut(dataPin, clockPin, LSBFIRST, StoBars-8); // shiftOut(dataPin, clockPin, MSBFIRST, StoBars-8); s=8;
}
shiftOut(dataPin, clockPin, LSBFIRST, StoBars); // shiftOut(dataPin, clockPin, MSBFIRST, StoBars-8); digitalWrite(latchPin, HIGH);
}
void loop() {
for (int j = 0; j < 11; j++) {
bar8(j);
delay(500);
}
}
hr.icon
https://gyazo.com/9f6c6ee6aa7f0cdf17a456816809d33c
このコードだと、緑→赤→黄→青 と逆から点灯します。
code:.ino
/*
以下のプログラムを入れてみてください
bar8()関数を作ってみました。
S値をたとえばS5なら bar8(5); とするとbar_ledが5つ点灯します。
0をいれるとクリアーします。
以下の例では595を2つ接続して16まで点灯出来るにした例です。
多分動くと思う
*/
//Pin connected to ST_CP of 74HC595
int latchPin = 11;
//Pin connected to SH_CP of 74HC595
int clockPin = 9;
////Pin connected to DS of 74HC595
int dataPin = 12;
//**** for LSBFIRST *****
byte StoBar9={0b00000000, 0b10000000,
0b11000000,
0b11100000,
0b11110000,
0b11111000,
0b11111100,
0b11111110,
0b11111111,
};
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void bar8(int s) {
digitalWrite(latchPin, LOW);
if(s>8){
shiftOut(dataPin, clockPin, LSBFIRST, StoBars-8); // shiftOut(dataPin, clockPin, MSBFIRST, StoBars-8); s=8;
}
shiftOut(dataPin, clockPin, LSBFIRST, StoBars); // shiftOut(dataPin, clockPin, MSBFIRST, StoBars-8); digitalWrite(latchPin, HIGH);
}
void loop() {
for (int j = 0; j < 11; j++) {
bar8(j);
delay(500);
}
}
hr.icon
https://gyazo.com/8e1571ccdee4650758cefe2919963d8c
このコードだと、緑→赤→黄までの5つが3秒点灯し、1秒消えます。
code:.ino
/*
bar8()関数を作ってみました。
S値をたとえばS5なら bar8(5); とするとbar_ledが5つ点灯します。
0をいれるとクリアーします。
*/
//Pin connected to ST_CP of 74HC595
int latchPin = 11;
//Pin connected to SH_CP of 74HC595
int clockPin = 9;
////Pin connected to DS of 74HC595
int dataPin = 12;
//**** for LSBFIRST *****
byte StoBar9={0b00000000, 0b00000001,
0b00000011,
0b00000111,
0b00001111,
0b00011111,
0b00111111,
0b01111111,
0b11111111,
};
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void bar8(int s) {
digitalWrite(latchPin, LOW);
if(s>8){
shiftOut(dataPin, clockPin, LSBFIRST, StoBars-8); // shiftOut(dataPin, clockPin, MSBFIRST, StoBars-8); s=8;
}
shiftOut(dataPin, clockPin, LSBFIRST, StoBars); // shiftOut(dataPin, clockPin, MSBFIRST, StoBars-8); digitalWrite(latchPin, HIGH);
}
void loop() {
bar8(5);
delay(3000);
bar8(0);
delay(1000);
}
hr.icon
hr.icon